package com.chen.base.utils.basic;

import lombok.experimental.UtilityClass;

import java.util.regex.Pattern;

/**
 * @author 陈锦龙
 * @since 2022/11/25 19:55
 */
@UtilityClass
public class StringUtil {

	private final static Pattern P = Pattern.compile("[^0-9]");

	/**
	 * 提取字符串中的数值
	 * @param str 字符串
	 * @return 数值
	 */
	public String extractNum(String str){
		return P.matcher(str).replaceAll("").trim();
	}

	/**
	 * 查询指定字符的个数
	 * @param souStr 源字符串
	 * @param charset 指定字符
	 * @return 个数
	 */
	public int charNum(String souStr, String charset){
		return souStr.length() - souStr.replaceAll(charset,"").length();
	}

	/**
	 * 首字母转大写
	 */
	public String initialToUpperCase(String name){
		return name.substring(0, 1).toUpperCase() + name.substring(1);
	}

	/**
	 * 首字母转小写
	 */
	public String initialToLowerCase(String name){
		return name.substring(0, 1).toLowerCase() + name.substring(1);
	}

	/**
	 * 生成0-9、A-Z、a-z的随机字符串
	 * @param num 位数
	 * @return 字符串
	 */
	public String createRanStr(int num){
		StringBuilder builder = new StringBuilder();
		for (int i = 0; i < num; i++) {
			int a = (int)(Math.random() * 123);
			// A-Z对应是65-90, a-z对应的是97-122
			if ((0 <= a && a <= 64) || (91 <= a && a <= 96)){
				a = (int)(Math.random() * 10);
				builder.append(a);
			}else {
				builder.append((char) a);
			}
		}

		return builder.toString();
	}

}